package jp.co.nes.awssupport.common.constant;

import jp.co.nes.awssupport.common.base.CommonException;

/**
 * クレジット履歴種別です。<br>
 * なお、toString()で返却する値は、ローカルのDBに登録する際に使用する値になります。
 */
public enum CreditCouponHistoryKind {
    /** クレジット登録履歴 */
    ADD {
        /* (非 Javadoc)
         * @see java.lang.Enum#toString()
         */
        @Override
        public String toString() {
            return "0";
        }

        /* (非 Javadoc)
         * @see jp.co.nes.awssupport.compile.constant.CreditCouponHistoryKind#getCreditCouponHistoryExIdSuffix()
         */
        @Override
        public String getCreditCouponHistoryExIdSuffix() {
            return "0";
        }

        /* (非 Javadoc)
         * @see jp.co.nes.awssupport.compile.constant.CreditCouponHistoryKind#getSforceValue()
         */
        @Override
        public String getSforceValue() {
            return "クレジット登録履歴";
        }
    },
    /** クレジット使用履歴 */
    USE {
        /* (非 Javadoc)
         * @see java.lang.Enum#toString()
         */
        @Override
        public String toString() {
            return "1";
        }

        /* (非 Javadoc)
         * @see jp.co.nes.awssupport.compile.constant.CreditCouponHistoryKind#getCreditCouponHistoryExIdSuffix()
         */
        @Override
        public String getCreditCouponHistoryExIdSuffix() {
            return "1";
        }

        /* (非 Javadoc)
         * @see jp.co.nes.awssupport.compile.constant.CreditCouponHistoryKind#getSforceValue()
         */
        @Override
        public String getSforceValue() {
            return "クレジット使用履歴";
        }
    },
    /** クレジット無効履歴 */
    INVALID {
        /* (非 Javadoc)
         * @see java.lang.Enum#toString()
         */
        @Override
        public String toString() {
            return "2";
        }

        /* (非 Javadoc)
         * @see jp.co.nes.awssupport.compile.constant.CreditCouponHistoryKind#getCreditCouponHistoryExIdSuffix()
         */
        @Override
        public String getCreditCouponHistoryExIdSuffix() {
            return "2";
        }

        /* (非 Javadoc)
         * @see jp.co.nes.awssupport.compile.constant.CreditCouponHistoryKind#getSforceValue()
         */
        @Override
        public String getSforceValue() {
            return "クレジット無効履歴";
        }
    };

    /**
     * ローカルのDBに登録されている値からCreditCouponHistoryKind型に変換して返却します。
     *
     * @param value 値
     * @return CreditCouponHistoryKind型に変換した内容
     */
    public static CreditCouponHistoryKind getKindFromLocalValue(String value) {
        CreditCouponHistoryKind result = null;
        if (USE.toString().equals(value)) {
            result = USE;
        } else if (INVALID.toString().equals(value)) {
            result = INVALID;
        } else {
            throw new CommonException("value is wrong");
        }
        return result;
    }

    /**
     * Force.com上での値を返却します。
     *
     * @return Force.com上での値
     */
    public abstract String getSforceValue();

    /**
     * クレジット履歴をForce.comに保管する際に使用する、クレジット履歴のExIdのSuffixの内容を返却します。
     *
     * @return クレジット履歴のExIdのSuffixの内容
     */
    public abstract String getCreditCouponHistoryExIdSuffix();
}
